在呼叫方法時,難免會需要傳遞參數,
那這些參數該如何傳遞呢?
在傳遞的過程中,究竟是傳值還是傳址呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CsharpDemo
{
class Program
{
static void Main(string[] args)
{
//宣告X整數
int x = Convert.ToInt32(Console.ReadLine());
//宣告y整數
int y = Convert.ToInt32(Console.ReadLine());
//呼叫Bigger方法,並將x,y的直傳入
int reault = Bigger(x, y);
Console.WriteLine("x = " + x + " ,y = " + y);
Console.WriteLine("最大值為" + reault);
Console.ReadKey();
}
//比較兩數大小的方法,將x y 傳入
static int Bigger(int x, int y)
{
//判斷x y誰大
int maxValue = (x >= y) ? x : y;
return maxValue;
}
}
}
輸入:
1
5
結果:
1
5
x = 1 ,y = 5
最大值為5
我們這邊使用到了三元條件運算子
,它的結構如下:
在想要停止的程式前面點一下,會出現小紅點(快捷鍵:F9)
接下來我們執行程式,會發現執行到此行時程式停下來了
這時候我們到功能列上按逐步執行(快捷鍵:F11),會發現按一下就執行一行程式,這樣我們就可以了解程式如何執行了
如果我們逐步執行程式後,會發現原來呼叫方法時,程式會先進入方法執行,執行完再回到原本程式繼續執行
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CsharpDemo
{
class Program
{
static void Main(string[] args)
{
//宣告一個Llist
List<string> myList = new List<string>() { "孤獨一隻雞", "人生一條蟲", "寂寞一隻鳥", "爆肝一隻鵝" };
Console.WriteLine("原始筆數 = " + myList.Count());
//呼叫方法並傳入List
int newCount = ListCount(myList);
Console.WriteLine("目前筆數 = " + newCount);
//這時候我們用foreach迴圈來拆解原本的List
foreach(string item in myList)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
//我們使用一個方法並接收list的傳遞,然後回傳list的筆數
static int ListCount(List<string> newList)
{
//我們在這list偷偷加一隻魚
newList.Add("高冷一隻魚");
return newList.Count();
}
}
結果:
原始筆數 = 4
目前筆數 = 5
孤獨一隻雞 人生一條蟲 寂寞一隻鳥 爆肝一隻鵝 高冷一隻魚
我們可以發現,我們明明在新的方法,新的List去修改List,結果原來的List卻受到影響,這就是因為他們指向的記憶體位置是同一個地方,所以只要一有變動所有資料都會受到影響